import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';

@Injectable()
export class webSocketService{
    //定义一个websocket类型的数据变量
    ws:WebSocket;

    constructor(){

    }

    /**
     * @description 创建一个可以观测的websocket的流的函数
     * @param url 请求的url地址
     */
    createWebSocketObservable(url:string):Observable<any>{
        this.ws = new WebSocket(url);
        //定义返回一个可以观测的流对象，分为三个部分什么时候发送这个消息，出现错误的处理和连接结束的处理
        return new Observable(
            observe=>{
                this.ws.onmessage = (event) => observe.next(event.data);
                this.ws.onerror = (event) => observe.error(event);
                this.ws.onclose = (event) => observe.complete();

            }
        );
    }


    /**
     * @description 客户端向服务端发送一条消息
     * @param message 
     */
    sendMessage(message:string){
        this.ws.send(message);
    }
}

